#include "../include/output.h"
#include "../include/defs.h"
#include "../include/kc.h"
#include "../include/libc.h"

extern TTY tty[8];

//Limpia una TTY (aunque no este activa)
void k_clear_screen() 
{
	char *vidmem;
	int mitty=GetTTY();
	vidmem=(char*)tty[mitty].terminal;
	unsigned int i = 0;
	
	while(i < (80 * 24 * 2))
	{
		vidmem[i] = ' ';
		i++;
		vidmem[i] = WHITE_TXT;
		i++;
	};
	tty[mitty].movimiento=0;
	message("tty ",24,150);
	putchar((char)mitty+0x30,24,158);
}

//Imprime un mensaje en una zona de la pantalla
void message(char * mensaje, int offset, int minioffset)
{
	int longitud;
	int mitty;
//	char* pantalla=(char*)0xb8000;
	char *video ;
	mitty=GetTTY();
	video=(char*)tty[mitty].terminal;
	longitud = strlen2(mensaje);
	memcpy3(video + 160*offset+minioffset, mensaje, longitud);
}

//Imprime N blancos en una zona de la pantalla
void blank(int cant, int offset, int minioffset)
{
	int i;
	int mitty;
//	char* pantalla=(char*)0xb8000;
	char *video ;
	mitty=GetTTY();
	video=(char*)tty[mitty].terminal;
	for(i=0;i<cant;i++)
		memcpy3(video + 160*offset+minioffset+2*i," ",1);
}

//Imprime un mensaje en la consola de errores
void puterr(char* s)
{
	int mitty;
	int len;
	char *video ;
	mitty=GetTTY();
	len=strlen2(s);
	video=(char*)tty[mitty].terminal;
	blank(70,24,0);
	message(s,24,0);
}

//Imprime un mensaje donde esta el cursor
void mess(char* s)
{
	int mitty;
	int len;
	char *video ;
	mitty=GetTTY();
	len=strlen2(s);
	video=(char*)tty[mitty].terminal;
	memcpy3(&video [tty[mitty].movimiento], s,len);
	tty[mitty].movimiento+=len*2;
}

//Pone un caracter en una zona de la pantalla
void putchar(char  c, int offset, int minioffset)
{
	int mitty;
	char *video ;
	mitty=GetTTY();
	video=(char*)tty[mitty].terminal;
	video [160*offset+minioffset]= c;
}
